package ways

import "fmt"

type Student struct {
	name string
	age  int
}

/**
Go 语言中 range 关键字用于 fors 循环中迭代，支持类型如下：
数组(array)
切片(slice)
通道(learn-channel)
集合(map)
它返回元素的索引和索引对应的值，在集合中返回 key-value 对的 key 值。
&符号的意思是获取变量的内存地址
*符号的意思是对指针取值
*/

func DoRange() {
	var students []Student

	students = []Student{
		{
			name: "a",
			age:  1,
		}, {
			name: "b",
			age:  2,
		},
	}
	// map[1] = Student 的实现
	data := make(map[int]*Student)

	for i, _ := range students {
		fmt.Println(&students[i])
		fmt.Println(&students)
		data[i] = &students[i]
	}
	for i, v := range data {
		fmt.Printf("right: key=%d, value=%v \n", i, *v)
	}
}
